// pages/secondPages/chuzhi/chuzhi.js
const orderUtils = require('../../../utils/order.js');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    countDown: "",
    current: 0,
    list: [{
        name: '储值￥66',
        desc: '限时赠6元现金券',
        amount: 66
      },
      {
        name: '储值￥100',
        desc: '限时赠10元现金券',
        amount: 100
      },
      {
        name: '储值￥200',
        desc: '限时赠20元现金券',
        amount: 200
      },
      {
        name: '储值￥500',
        desc: '限时赠50元现金券',
        amount: 500
      },
    ],
    visible: false,
    isAgreed: false, // 添加协议同意状态
    isCreatingOrder: false, // 添加创建订单状态
    token: '', // 添加token
    openid: '' // 添加openid
  },
  onVisibleChange(e) {
    this.setData({
      visible: e.detail.visible,
    });
  },

  // 处理协议同意状态变化
  handleAgreeChange(e) {
    this.setData({
      isAgreed: e.detail.checked
    });
  },

  // 立即储值按钮点击事件
  handleRecharge() {
    if (!this.data.isAgreed) {
      wx.showToast({
        title: '请先同意协议',
        icon: 'none'
      });
      return;
    }

    // 检查是否正在创建订单
    if (this.data.isCreatingOrder) {
      return;
    }

    // 检查token
    if (!this.data.token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    // 设置创建订单状态
    this.setData({
      isCreatingOrder: true
    });

    // 获取选中的储值金额
    const selectedRecharge = this.data.list[this.data.current];
    const rechargeAmount = selectedRecharge.amount;

    // 构造订单数据
    const orderData = {
      orderId: "recharge_" + Date.now(),
      amount: rechargeAmount,
      description: `储值￥${rechargeAmount}`,
      openid: this.data.openid,
      products: [{
        id: "recharge_card",
        name: selectedRecharge.name,
        desc: selectedRecharge.desc,
        price: rechargeAmount,
        quantity: 1
      }],
      metadata: {
        source: "miniprogram",
        clientTime: new Date().toISOString(),
        orderTitle: selectedRecharge.name
      }
    };

    // 调用支付流程
    orderUtils.processPayment(orderData, this.data.token)
      .then(result => {
        console.log('支付成功:', result);
        // 显示支付成功提示
        wx.showToast({
          title: '储值成功',
          icon: 'success'
        });

        // 支付成功后的逻辑处理
        setTimeout(() => {
          // 可以跳转到成功页面或更新用户余额等
          wx.navigateTo({
            url: '/pages/secondPages/chuzhi/success?amount=' + rechargeAmount
          });
        }, 1500);
      })
      .catch(error => {
        console.log('支付失败:', error);
        if (error.cancelled) {
          wx.showToast({
            title: '已取消支付',
            icon: 'none'
          });
        } else {
          wx.showToast({
            title: error.message || '储值失败',
            icon: 'error'
          });
        }
      })
      .finally(() => {
        // 支付完成后的清理工作
        this.setData({
          isCreatingOrder: false
        });
      });
  },
  /**
   * 权益详情
   */
  handleView() {
    this.setData({
      visible: true
    });
  },

  handleItemClick(e) {
    const {
      current
    } = e.currentTarget.dataset
    console.log(e, current);
    this.setData({
      current: current
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取token和openid
    const token = wx.getStorageSync('token') || '';
    const openid = wx.getStorageSync('openid') || '';

    this.setData({
      token,
      openid
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})